package controleur;

import hibernate.HibernateUtil;
import hibernate.Prevision;


import java.io.*; 
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
import java.util.List;


import javax.imageio.ImageIO;
import javax.servlet.*; 
import javax.servlet.http.*; 
import javax.swing.JButton;


import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Query;
import net.sf.hibernate.Session;

import org.jfree.chart.*; 


public class Zoomer extends HttpServlet { 

 	
	
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 
    
	

  } 
  
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	 
	 HttpSession session = request.getSession();
	 Query requete1=(Query) session.getAttribute("requete");
	 int button;
	 ServletBarChart serv=new ServletBarChart();
	 
	 if (request.getParameter("Zoomer")!=null){
	 button =  Integer.parseInt(request.getParameter("Zoomer"));
	 session.setAttribute("button", button);
	 }
	 Query majreq;
	 String produit;
	 String site;
	 Integer produit2;
	 Integer site2;
	 List <?>list;
	 String chemin="";
	 
	 
	
	 
	 	Integer futur=(Integer)session.getAttribute("futur");
	 	Integer passe=(Integer) session.getAttribute("passe");
		String methode=(String) session.getAttribute("methode");
		String region=(String) session.getAttribute("region");
		String region_site=(String) session.getAttribute("regionsite");
		String type=(String) session.getAttribute("type");
		String preference=(String) session.getAttribute("preference");

		
		if((session.getAttribute("produit")!=null)&&(session.getAttribute("produit")!="")){
			//produit=(String) session.getAttribute("produit");
			produit2=(Integer) session.getAttribute("produit");
		}
		else{
			produit2=(Integer) session.getAttribute("button");
		}
		
		
		if((session.getAttribute("site")!=null)&&(session.getAttribute("site")!="")){
			//site=(String) session.getAttribute("site");	
			site2=(Integer) session.getAttribute("site");
		}
			
		else{
			site2=(Integer) session.getAttribute("button");
		}
		
		if((session.getAttribute("produit")=="")&&(session.getAttribute("site")=="")){
			produit2=null;
		}
		
		session.setAttribute("site", site2);
		if(produit2!=null){
		session.setAttribute("produit", produit2);
		}else session.setAttribute("produit", "");
	 
	 
	// if(request.getParameter("button").equals("CalculerReapprovisionnement"))
	 
	 Object[] row=null;
	 int i=1;
	 try{
	 for (Iterator ite = 
			 requete1.iterate(); i<=(Integer) session.getAttribute("button");) 
			 {
			row = (Object[]) ite.next();
			i=i+1;

			 }
	 }catch (Exception e){
		 
	 }
	 i=i-1;
	 
	/* ServletBarChart laserv=new ServletBarChart();
	 try {
		 
		 list=laserv.affichage_prev(methode,produit2,passe,futur,site2,region,type,region_site);
		 Object[] titi= list.toArray();
		 session.setAttribute("lignesprev", list);

			
	} catch (HibernateException e) {
	
		e.printStackTrace();
	}*/
	 
	 
	 if((session.getAttribute("site")!=null)&&(session.getAttribute("produit")!=null)&&(session.getAttribute("site")!="")&&(session.getAttribute("produit")!="")){
			
		 
		// if((produit2!=null)&&(site2!=null)){
				try {
					
					list=serv.Affichageprevfinal(methode, produit2, passe, futur, site2, region,  type, region_site, preference);
					session.setAttribute("lignesprev", list);
				} catch (HibernateException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
		 
		// }
		 
		 
		 	CreateGraph cr=new CreateGraph();
			JFreeChart chart = cr.creategraph(futur,passe,methode,region,produit2,site2,type,region_site,preference);
			

		
			ChartUtilities.saveChartAsPNG(new File("graphique_previsions.png"), chart, 980, 800);

			String path=new File("").getAbsolutePath();
			chemin=path+"\\graphique_previsions.png";
			request.setAttribute("chemin", chemin);

			
		
			request.setAttribute("obj", chart);
		
			}
	 else{
		 try{
			Query requete=null;
			//ServletBarChart serv=new ServletBarChart();
			if((site2!=null)&&(produit2==null)){
				requete=serv.agregationprev(methode,passe,futur,site2,produit2,region,type,region_site,"prev.id_produit",preference);
				
				session.setAttribute("requete", requete);
			}
			if((produit2!=null)&&(site2==null)){
				requete=serv.agregationprev(methode,passe,futur,site2,produit2,region,type,region_site,"prev.id_site",preference);
			}
			
			
			if((produit2==null)&&(site2==null)){
				requete=serv.agregationprev(methode,passe,futur,site2,produit2,region,type,region_site,"prev.id_site",preference);// A REVOIR POUR LAISSER LE CHOIX
			}
			
		 } catch (HibernateException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	 }
	 
	 getServletContext().getRequestDispatcher("/resultat2.jsp").forward(request, response);

}
}